#ifndef AOS_H
#define AOS_H

int Select(int x1, int y1, int x2, int y2, int x, int y); // Алгоритм Кохена-Сазерленда

#define RUNNERSIZE 24 // Длина идентификатора

struct DESK_GENSH2
{
  unsigned short wCounter;     // Количество элементов
  unsigned short wSize;			// Размер элемента в байтах
  unsigned short wIncrease;     // Размер приращения при вставке
  unsigned int dwSize;          // Размер массива в байтах
  short hgArray;                      	// Дескриптор блока памяти
  short hpArray;                      	// Адрес при фиксации блока памяти
  char szName[16];                 	// Идентификатор массива (Имя владельца файла)
  short iDesktops;                  	// Количество групп окон
  short iDesktop;                     	// Номер текущей группы
  short iRTEmode;                  	// Стартовый режим
  short iLastWindow;              	// Идентификатор последнего окна
  short hFinder;                      	// Объект поиска
  char szTitle [128];                	// Наименование группы окон
  char szFile [192];                 	// Полное имя файла WDS
  short iIndex;                        	// Индекс группы окон
  short iReserved3 [7];            	// Резервируемые слова
  short hRTE;                         	// Дескриптор объекта RTE
  short iReserved4;                 	// Резервируемое слово
  unsigned short Flags;           	// Поле индикаторов
} ;
struct DESK_ITEMSH2
{
 short x,y;                              // Координаты окна
 short cx,cy;                           // Размер окна
 short iRTEmode;                   // Стартовый режим
 short iIdentification;              // Код идентификации окна
 short iDesktop;                      // Код группы окон
 short iView;                           // Номер вида окна
 char szFile [36];                     // Имя файла WHS
// WGEFLAGSSH Flags; // Поле индикаторов (cm. cwhs.h)
 unsigned short Flags;	// Поле индикаторов
 short hDesktop; // Цвет фона окна (B, A)
 short hText; // Цвет фона окна (R, G)
 short iText;                             // Длина строки заголовка
 unsigned short adFlags;	// Поле индикаторов
// struct { // ПОЛЕ ИНДИКАТОРОВ
//  unsigned short fACTIVE    : 1;          // Индикатор активности
//  unsigned short fMARKED    : 1;        // Индикатор маркировки
//  unsigned short fTEXTRELOAD : 1;
//  unsigned short fRESERVED  : 13;     // Резервируемые поля
// } adFlags;
 unsigned char bBackground;    // Индекс цвета фона окна
 unsigned char bDesktopIndex;  // Индекс группы окон
};

struct RTEHEADER  // ПАРАМЕТРЫ ОБЪЕКТА RTE_master
 {
  int iRunner;                          // Количество объектов
  int iLocals;                           // Количество локальных объектов
  unsigned short wFlags;        // Поле индикаторов
  unsigned int dwProgram;  // Размер области кода
  int iAAT;                              // Размер таблицы функций
  int iRAT;                              // Количество реакций
  int iMAT;                             // Количество сообщений
 };

struct RAT //  ТАБЛИЦА РЕАКЦИЙ И ФУНКЦИЙ ОБРАБОТКИ ДАННЫХ
{
  short iObject;               // Идентификатор объекта
  short iWindow;            // Идентификатор окна
  short iMode;                // Индекс режима
  short iHandler;            // Индекс функции обработки
  unsigned short Flags;  // Поле индикаторов
//  struct
//  {
//    USHORT uiDISABLE  : 1;      // Запрещенная операция
//    USHORT uiRESERVED : 15; // Резервируемые поля
//  } Flags;
};
struct MAT // ТАБЛИЦА СООБЩЕНИЙ И ФУНКЦИЙ ОБРАБОТКИ ДАННЫХ
{
  short iMessage;           // Индекс сообщения
  short iMode;                // Индекс режима
  short iHandler;            // Индекс функции обработки
  unsigned short Flags;  // Поле индикаторов
//  struct
//  {
//    USHORT uiDISABLE  : 1;     // Запрещенная операция
//    USHORT uiRESERVED : 15; // Резервируемые поля
//  } Flags;
};
struct AAT // ТАБЛИЦА ОПЕРАЦИЙ
{
  char szAction [RUNNERSIZE];  // Идентификатор операции
  short iIndex;                                 // Индекс операции
  short sReserv;
  unsigned int wAddress;            // Адрес точки входа
  short iArgs;                                  // Количество аргументов
  short iLocals;                               // Количество локальных символов
};

#endif // AOS_H
